使用Zxing生成二维码并输出到Web页面

9,916次阅读
15 条评论

共计 2037 个字符,预计需要花费 6 分钟才能阅读完成。

前言

时间过得真快,都已经两个月多没有写博文了,由于最近换了一份工作,有点忙所以就一直没有写文章,非常抱歉。

本次我们来演示一下使用 Zxing 生成二维码并输出到页面中。

正文

ZXing 是一个开放源码的,用 Java 实现的多种格式的 1D/2D 条码图像处理库,它包含了联系到其他语言的端口。Zxing 可以实现使用手机的内置的摄像头完成条形码的扫描及解码。

首先,我们要新建一个 web 工程(使用 maven 构建),然后在 pom.xml 里面添加 zxing 依赖

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.2.1</version>
</dependency>

然后在其控制层生成图像,因为 Demo 演示我也就没有分层来写

package cn.licoy.controller;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Licoy.cn
 * @version 1.0 / qrcode
 */
@Controller
public class QrController {@GetMapping("/")
    public void get(@RequestParam(name = "w",defaultValue = "200",required = false) int width,
                    @RequestParam(name = "h",defaultValue = "200",required = false) int height,
                    @RequestParam(name = "f",defaultValue = "png",required = false) String format,
                    @RequestParam(name = "c",defaultValue = "content") String content,
                    HttpServletResponse response) throws Exception {ServletOutputStream out = response.getOutputStream();
        Map<EncodeHintType,Object> config = new HashMap<>();
        config.put(EncodeHintType.CHARACTER_SET,"UTF-8");
        config.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        config.put(EncodeHintType.MARGIN, 0);
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE,width,height,config);
        MatrixToImageWriter.writeToStream(bitMatrix,format,out);
        System.out.println("二维码生成完毕,已经输出到页面中。");
    }
}

最后启动该 web 启动,访问该 web 程序根目录即可显示二维码图片。

演示程序已经打包上传到 Github,项目使用的是 SpringBoot 构建的,可以 clone 至本地然后使用 idea 打开运行即可。
Github:https://github.com/Licoy/qrcode-google-zxing

后记

本文仅供参考,具体细节未写出,有任何纰漏可以下方评论区指出,谢谢。(使用 Zxing 生成二维码并输出到 Web 页面 说实话,我自己都看不下去了)

正文完
使用官方微信小程序体验更多功能
post-qrcode
 8
憧憬Licoy
版权声明:本站原创文章,由 憧憬Licoy 于2017-08-01发表,共计2037字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(15 条评论)
态度xiaomi 评论达人 LV.1
2017-12-12 22:08:49 回复

学习啦。谢谢。

 Windows  Firefox  中国广东省中山市电信
商品免费领取 评论达人 LV.1
2017-12-06 15:58:38 回复

一直在找这个,今天就遇见了,不错。就和你需要酒,我就给你送酒一样!

 Windows  Chrome  中国陕西省西安市联通
微先生 评论达人 LV.1
2017-08-28 22:56:23 回复

:wink: 哈哈哈 还不错!

 Windows  Chrome  中国湖北省恩施电信
轩陌 评论达人 LV.1
2017-08-21 07:26:45 回复

:wink:

 iPhone  Safari  中国上海上海市电信
Koolight 评论达人 LV.3
2017-08-15 08:20:06 回复

又有新的方案了,赞!

 Android  UC Browser  中国湖北省武汉市电信
晴和君 评论达人 LV.1
2017-08-11 21:24:02 回复

我觉得java好难的。。

 Macintosh  Safari  中国江西省萍乡市电信
bandwagonhost 评论达人 LV.1
2017-08-09 14:46:51 回复

朋友 交换链接吗

 Windows  Chrome  中国江苏省苏州市电信
    憧憬Licoy 博主
    2017-08-09 14:48:21 回复

    @bandwagonhost 非常抱歉,贵站与本站友链对象不符,暂不给予友链,谢谢您的支持!

     Windows  Chrome
boke112导航 评论达人 LV.1
2017-08-01 14:39:34 回复

看习惯了PHP,再看这些JAVA代码,很陌生的感觉

 Windows  Chrome  中国广西南宁市电信